// 任务日志控制器
import taskLogService from '../services/taskLogService.ts';
import { successResponse, errorResponse } from '../utils/response.ts';
import type { FastifyRequest, FastifyReply } from 'fastify';

// 定义创建任务日志请求体类型
interface CreateTaskLogBody {
  content: string;
}

// 定义路由参数类型
interface TaskLogParams {
  taskId: string;
}

/**
 * 创建任务日志控制器
 * 处理创建新任务日志的请求
 * @param {FastifyRequest} request - Fastify请求对象，包含任务ID和日志内容
 * @param {FastifyReply} reply - Fastify响应对象
 * @returns {Promise<FastifyReply>} 创建结果响应
 */
async function createTaskLogHandler(request: FastifyRequest<{ Params: TaskLogParams; Body: CreateTaskLogBody }>, reply: FastifyReply): Promise<FastifyReply> {
  try {
    const { taskId } = request.params;  // 从参数中获取任务ID，而不是从body中获取
    const { content } = request.body;   // 从body中获取内容
    // 从request.user.userId获取用户ID（与其他控制器保持一致）
    const userId = request.user?.userId;
    
    // 验证输入参数
    if (!userId) {
      throw new Error('用户ID是必需的');
    }
    
    if (!taskId) {
      throw new Error('任务ID是必需的');
    }
    
    if (!content) {
      throw new Error('内容是必需的');
    }
    
    const taskLog = await taskLogService.createTaskLog(userId, taskId, content);
    return reply.send(successResponse(taskLog, '任务日志创建成功'));
  } catch (err) {
    console.error('创建任务日志处理器中发生错误:', (err as Error).message);
    return reply.code(400).send(errorResponse((err as Error).message, 10001));
  }
}

/**
 * 获取任务日志列表控制器
 * 处理获取任务日志列表的请求
 * @param {FastifyRequest} request - Fastify请求对象，包含任务ID参数
 * @param {FastifyReply} reply - Fastify响应对象
 * @returns {Promise<FastifyReply>} 任务日志列表响应
 */
async function getTaskLogsHandler(request: FastifyRequest<{ Params: TaskLogParams }>, reply: FastifyReply): Promise<FastifyReply> {
  try {
    const { taskId } = request.params;
    // 从request.user.userId获取用户ID（与其他控制器保持一致）
    const userId = request.user?.userId;
    
    // 验证输入参数
    if (!userId) {
      throw new Error('用户ID是必需的');
    }
    
    if (!taskId) {
      throw new Error('任务ID是必需的');
    }
    
    const taskLogs = await taskLogService.getTaskLogs(userId, taskId);
    return reply.send(successResponse(taskLogs, '任务日志获取成功'));
  } catch (err) {
    console.error('获取任务日志处理器中发生错误:', (err as Error).message);
    return reply.code(400).send(errorResponse((err as Error).message, 10001));
  }
}

export default { createTaskLogHandler, getTaskLogsHandler };



